﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace maHua
{
    class Program
    {
        static void Main(string[] args)
        {
            var temp = 123;
            Console.WriteLine($"temp当前值={temp}");//常量字符串插值

            ///小结：
            ///集合声明的方式
            ArrayList declare1 = new ArrayList();
           
            ArrayList declare3 = new ArrayList() { 1, 2, 3, 4, 5 };

            ///优点：
            ///1.可以实现长度改变；
            ///2.可以随时进行元素的插入、新增；
            ///3.可以随时移除元素；


            ///缺点：
            ///1.因为存取值过程中，需要频繁拆箱、装箱，所以会导致性能下降；
            ///2.ArrayList编译时不会检查数据类型，会因为运行时异常报错，性能下降；
            ///列表：List
            ///语法格式:List<数据类型>变量名 = new List</数据类型>();


            //List<string> obj = new List<string>();
            List<int> obj = new List<int>();//整形列表定义    同一数据类型
            obj.Add("1");
            obj.Add("2");
            obj.Add("56");
            obj.Insert(3, "开");
            obj.Insert(3, "始");

            ///当列表声明时未声明长度，默认容量为：0
            ///一旦进行新增元素，容量会由原来的0变为4；
            ///每次容量超出，会按照原来的容量的两倍进行扩容；
            //int count = obj.Count;//Count : 获取当前列表中有几个元素
            //var cap = obj.Capacity;//Capacity:获取列表容量
            //Console.WriteLine($"列表的元素个数={count},容量= {cap}");
            //Console.WriteLine($"元素56的索引值={obj.IndexOf ("56")}");

            //obj.Add("564");
            //obj.Add("8");
            //obj.Add("7");
            //obj.Add("145");
            //obj.Remove("7");
            //obj.RemoveAt(4);
            //obj.RemoveAt(3);
            //Console.WriteLine();


            //obj.Sort();//进行升序排序
            //foreach(var item in obj)
            //{
            //    Console.Write($"{item}");
            //}
            //obj.Reverse();//倒序
            //foreach (var item in obj)
            //{
            //    Console.Write($"{item}");
            //}
            //Console.WriteLine();
            //定义一个成绩列表scoreList
            var scoreList = new List<int>()
            {
                75,
                60,
                99,
                100,
                85
            };
            //求该列表的容量
            var a = scoreList.Capacity;
            Console.WriteLine($"容量={a}");
            //成绩由高到低排序输出
            scoreList.Sort();
            scoreList.Reverse();
            foreach (var item in scoreList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine();
            //假设需要插入一个成绩66，要求不改变排序规则，进行该值的插入

            for (int i = 0; i < scoreList.Count; i++)
            {
                if (66 > scoreList[i])
                {
                    scoreList.Insert(i, 66);
                    break;
                }
            }
            foreach (var item in scoreList)
            {
                Console.WriteLine (item);
            }
            Console.WriteLine();








            //for (int a =0;i<obj.Count;i++)
            //{
            //    Console.Write($"{obj[a]}");//通过index进行列表元素的访问：obj[5]
            //}
            //在索引值为1插入元素“Web开发”
            Console.WriteLine();
            Console.ReadKey();
        }
    }
}
